// utils/iosPay.js
let iapChannel = null

export default {
  /**
   * 初始化 IAP 支付通道
   */
  init() {
    return new Promise((resolve, reject) => {
      uni.getProvider({
        service: 'payment',
        success: (res) => {
          const channel = res.providers.find(p => p.id === 'appleiap')
          if (channel) {
            iapChannel = channel
            resolve(channel)
          } else {
            reject(new Error('IAP 支付模块未集成，请使用真机打包调试'))
          }
        },
        fail: (err) => reject(err)
      })
    })
  },

  /**
   * 获取商品列表
   * @param {Array<String>} productIds 商品 ID 数组
   */
  requestProducts(productIds = []) {
    return new Promise((resolve, reject) => {
      if (!iapChannel) return reject(new Error('IAP 未初始化'))

      iapChannel.requestProduct(productIds, (products) => {
        resolve(products)
      }, (err) => {
        reject(err)
      })
    })
  },

  /**
   * 购买商品
   * @param {String} productId 商品 ID
   * @param {Function} errCb 回调函数
   */
  purchase(productId, errCb = () => {}) {
    return new Promise((resolve, reject) => {
      uni.requestPayment({
        provider: 'appleiap',
        orderInfo: {
          productid: productId
        },
        success: (transaction) => {
          resolve(transaction)
        },
        fail: (err) => {
          errCb();
          reject(err)
        }
      })
    })
  },

  /**
   * 恢复未完成的交易
   */
  restore() {
    return new Promise((resolve, reject) => {
      if (!iapChannel) return reject(new Error('IAP 未初始化'))

      iapChannel.restoreCompletedTransactions((list) => {
        resolve(list)
      }, (err) => {
        reject(err)
      })
    })
  },

  /**
   * 完成交易（关闭订单）
   * @param {Object} transaction 交易对象
   */
  finish(transaction) {
    return new Promise((resolve, reject) => {
      if (!iapChannel) return reject(new Error('IAP 未初始化'))

      iapChannel.finishTransaction(transaction, () => {
        resolve(true)
      }, (err) => {
        reject(err)
      })
    })
  }
}

/*
使用示例
import Pay from '@/utils/iosPay.js'


export default {
  methods: {
    async doPay() {
      try {
        // 1. 初始化 IAP
        await Pay.init()

        // 2. 请求商品列表
        const products = await Pay.requestProducts(["com.demo.app.vip1"])
        console.log("商品信息:", products)

        // 3. 发起支付
        const transaction = await Pay.purchase("com.demo.app.vip1")
        console.log("交易信息:", transaction)

        // ⚠️ 一般这里需要把交易凭证发到你服务器做校验
        // await this.uploadReceipt(transaction.transactionReceipt)

        // 4. 完成订单（关闭交易队列）
        await Pay.finish(transaction)

        uni.showToast({
          title: "支付成功",
          icon: "success"
        })
      } catch (err) {
        console.error("支付流程出错:", err)

        uni.showModal({
          title: "提示",
          content: err.message || "支付失败，请稍后重试",
          showCancel: false
        })
      }
    }
  }
}



*/